軟體系統能夠工作比較重要,還是軟體系統更容易變更比較重要?
能夠工作 = 房間能整理好
意思是:至少東西有歸位,暫時能住人、能用。就像軟體能跑起來,先解決眼前需求。
容易變更 = 房間容易打掃
意思是:之後要換擺設方式、清潔、收納,都很方便,不會變成下次整理的大災難。就像軟體架構設計良好,未來能輕鬆修改。
阿吉的房間又亂了。桌上有漫畫書,床上有衣服,書包裡塞滿昨天收回來已經考完的考卷。
這次他決定試試兩種整理方法:
快速整理法
他把漫畫疊起來放到桌角,衣服塞進衣櫃,考卷隨便塞在放紙類的箱子。房間看起來整齊了,至少可以讓媽媽進來檢查時不會被念。
耐心整理法
他先把書櫃清空,分好漫畫區、參考書區,再幫衣服褲子折好放不同層的衣櫃。考卷分類放到資料夾。雖然一開始花了比較久,但下次要找東西就超快。
過了一個星期,第一種方法的房間又亂了,東西找不到,阿吉只好再來一次大掃除。第二種方法的房間,卻只要花五分鐘就能恢復整齊。
阿吉忽然想到,原來寫程式也一樣:
我試了兩種不同建立專案的方式:
結果:
一開始的 Prompt 設計方式不同,產生出來的「規模」與「步驟」差超多!
第一種方法,很快就能看到新增、標記分類、搜尋的功能,甚至有圖片。
我今天還在 .github/copilot-instruction.md
裡,參考了 Kent Beck 老師在 GitHub 上的 B+Tree 專案,學到一個「Tidy First 方法」:
TIDY FIRST APPROACH | Tidy First 方法
將所有變更分成兩種明確類型:
STRUCTURAL CHANGES(結構性變更):重新排列程式碼但不改變行為(重新命名、抽取方法、移動程式碼)
BEHAVIORAL CHANGES(行為性變更):新增或修改實際功能
絕不在同一次提交中混合結構性與行為性變更
需要兩者時,先做結構性變更
透過測試驗證結構性變更前後行為不變
資料來源:Kent Beck 的 Claude Code 規則翻譯:TDD 與 Tidy First 的實踐指南
這就像「先把房間收納位置整理清楚,再決定要不要添購新東西」。